import router from "@/router";
import {useLoginUserStore} from "@/stores/useLoginUserStore";
import AccessEnum from "@/access/accessEnum";
import checkAccess from "@/access/checkAccess";

/**
 * 用户逻辑判断
 */
router.beforeEach(async (to, from, next) => {
  const loginUserStore = useLoginUserStore();
  // 通过Store获取当前用户信息
  let loginUser = loginUserStore.loginUser;
  console.log('登录用户信息：', loginUser)

  // // 如果之前没登陆过，自动登录
  if (!loginUser || !loginUser.userRole) {
    // 加 await 是为了等用户登录成功之后，再执行后续的代码
    await loginUserStore.fetchLoginUser();
    loginUser = loginUserStore.loginUser;
  }


  const needAccess = (to.meta?.access as string) ?? AccessEnum.NOT_LOGIN;
  // 如果访问的页面必须登录才能使用
  if(needAccess !== AccessEnum.NOT_LOGIN) {
    // 如果未登录，跳转到登录页面
    if(!loginUser || !loginUser.userRole || loginUser.userRole === AccessEnum.NOT_LOGIN) {
      next(`/user/login?redirect=${to.fullPath}`)
      return
    }
  // 如果已经登录，但是权限不足，跳转到无权限页面
  if(!checkAccess(loginUser, needAccess)) {
      next(`/noAuth`)
      return
    }
  }
  // 放行
  next()
})
